#ifndef PWAVE_PWAVESTENCILMATH_H
#define PWAVE_PWAVESTENCILMATH_H

#include <vector>

#include "StencilMath.h"
#include "Miscellaneous_structs.h"

class PWaveStencilMath : public StencilMath {
public:
    static void stencil_order_4_pml_core(double* dst, const double* src, const double* coeffc2_dist, const double* c2dtQ_dist,
                                         int halo, int ldx, int ldy, int ldz,
                                         int non_pml_min_x, int non_pml_max_x);

    static void stencil_order_4_pml_corner(double* dst, const double* src, const double* coeffc2_dist, const double* c2dtQ_dist,
                                           int halo, int ldx, int ldy, int ldz);

    static void compute_wave_src(double* dst, const std::vector<LocalSrcInfo>& local_src_info, double t);
};

#endif //PWAVE_PWAVESTENCILMATH_H
